
package com.hlkj.pay.service.merchant;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import com.hlkj.framework.common.pojo.PageResult;
import com.hlkj.pay.dto.merchant.report.MerchantReportDto;
import com.hlkj.pay.dto.merchant.report.MerchantReportInfoPageDto;
import com.hlkj.pay.dto.merchant.report.MerchantReportInfoPageQueryDto;
import com.hlkj.pay.enums.MerchantEnum;
import com.hlkj.pay.infrastructure.model.merchant.MerchantReportInfoDO;

/**
 * @author HlpayTeam
 * @date 2024/12/20 13:16
 */
public interface IMerchantReportService {

    /**
     * 
     * @param merchantReportInfoPageQueryDto
     * @return
     */
    PageResult<MerchantReportInfoPageDto> queryPage(MerchantReportInfoPageQueryDto merchantReportInfoPageQueryDto);

    /**
     *
     * @param merchantAccessDto
     */
    Long saveReport(MerchantReportDto merchantAccessDto);

    /**
     *
     * @param id
     * @return
     */
    MerchantReportInfoDO detail(Long id);

    /**
     *
     * @param merchantAccessDto
     */
    Long updateReport(MerchantReportDto merchantAccessDto);

    /**
     *
     * @param id
     * @return
     */
    MerchantReportDto domainDetail(Long id);

    /**
     *
     * @param id
     * @param channelApprove
     * @param remark
     */
    void updateStatus(Long id, MerchantEnum.REPORT_STATUS channelApprove, String remark);

    /**
     * 
     * @param id
     */
    void delete(Long id);

    /**
     *
     * @param requestId
     * @return
     */
    MerchantReportInfoDO queryByRequestId(String requestId);

    void updateReportInfo(MerchantReportInfoDO updateAccessInfoDO);

    /**
     *
     * @param acctId
     * @param channelCode
     * @return
     */
    MerchantReportInfoDO queryByExtendB(String acctId, String channelCode);

    /**
     *
     * @param sn
     * @param mchRequestId
     * @return
     */
    MerchantReportInfoDO queryByMchRequestId(String sn, String mchRequestId);

    /**
     *
     * @param inUserId
     * @return
     */
    MerchantReportInfoDO detailByUserId(String inUserId);
}
